package edu.biwu.vo;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Product {
    private Integer pid;

//    @JsonProperty("name")
    @JsonAlias("name")
    private String pname;

    private Double price;

    /**
     * @JsonProperty("name"):
     *   1.将前端提交的name参数的值绑定到pname上
     *   2.把Product对象转换成Json的时候,pname会被替换为name
     * @JsonAlias("name")
     *   也可以将前端提交的name参数绑定到pname上,但是将来将Product对象
     *   转换成Json数据的时候,不会改变属性名
     */

    /**
     * @JsonIgnore: 加了该注解的属性,将来转成Json的时候会被忽略掉
     * Include.NON_NULL: 如果city为null,转换成Json就不再包含city属性,如果city非null,转换成
     *                   json的时候就包含city属性(过滤null属性)
     * Include.NON_EMPTY:如果属性为一下"空值"转换成Json的时候就不再包含,否则包含
     *   null值
     *   空字符串(字符串length()为0)
     *   空集合和空数组(size和length为0)
     *   空map(size为0)
     */
//    @JsonIgnore
//    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private City city;

    public Product(Integer pid, String pname, Double price) {
        this.pid = pid;
        this.pname = pname;
        this.price = price;
    }
}
